/**
 * 
 */
package com.dianba.supply.demo.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dianba.commons.exception.EnumerationCheckException;
import com.dianba.commons.exception.lang.DefaultApiController;
import com.dianba.supply.demo.service.TestService;

/**
 *
 *
 * @author zhoucong
 * @date 2016年3月25日 上午11:27:17
 */
@Controller
@RequestMapping(value = "/default")
public class TestDefaultController extends DefaultApiController {
	@Resource
	private TestService testService;

	/**
	 *
	 * @TestURL http://localhost:18080/exception_demo/test/t1.action?userId=2&
	 *          pwd=1231232
	 * 
	 * @param httpServletRequest
	 * @author zhoucong
	 * @date 2016年3月26日 下午4:24:14
	 */
	@RequestMapping(value = "/t1")
	@ResponseBody
	// 不要把参数放在这里.因为错了,前端可能收不到任何提示,增加调试沟通成本
	public String test1(HttpServletRequest httpServletRequest) {
		// 收不到这个参数或者格式不正确会提示前端, 这个在开发环境是 直接提示: XXX 参数不正确 , 运营环境则提示 : 错误码 4004 
		int userId = mustInt("userId");
		int i = this.testService.getNum(userId);
		System.out.println("..............");
		
		// 设置返回结果 , 即: response 的 num 属性
		
		return i+"";
	}

	/**
	 * @TestURL http://localhost:18080/exception_demo/test/t2.action?userId=2&
	 *          pwd=1231232
	 *
	 * @param httpServletRequest
	 * @author zhoucong
	 * @date 2016年3月26日 下午4:24:33
	 */
	@RequestMapping(value = "/t2")
	@ResponseBody
	public Object test2(HttpServletRequest httpServletRequest) {
		String token = mustText("token");
		String str = this.testService.getStr(token);
		
		// 设置返回结果
		return str;
	}

	/**
	 * @TestURL http://localhost:18080/exception_demo/test/t3.action?userId=2&
	 *          token=1
	 *
	 * @param httpServletRequest
	 * @author zhoucong
	 * @date 2016年3月26日 下午4:25:04
	 */
	@RequestMapping(value = "/t3")
	@ResponseBody
	public String test3(HttpServletRequest httpServletRequest) {
		String token = mustText("token");
		String str = this.testService.getStr(token);
		
		// 设置返回结果
		return str;
	}

	/**
	 * @TestURL http://localhost:18080/exception_demo/test/updatePwd.action?
	 *          userId=2&pwd=1231232
	 * 
	 *
	 * @param httpServletRequest
	 * @author zhoucong
	 * @throws EnumerationCheckException 
	 * @date 2016年3月26日 下午4:26:14
	 */
	@RequestMapping(value = "/updatePwd")
	@ResponseBody
	public String updatePwd(HttpServletRequest httpServletRequest) throws EnumerationCheckException {
		String pwd = mustText("pwd");
		int userId = mustInt("userId");
		// 这个方法如果执行失败会飞出异常,应为开发的时候各个人的水平不同
		// 时间也紧迫,可能有很大部分人会忽略返回结果,那样即使失败了也当成成功处理,这个在项目中出现的几率非常大
		// .所以要异样返回,这样子调试的时候可以明显的发现.
		// 由于他一般出现的都是不需要检查异常,若果操作危险需要使用 "检测异样" 强制要求调用方注意处理
		this.testService.updatePwd(userId, pwd);

		 return null;
	}

}
